Distributed information processing involves two or more processing entities under autonomous control or purpose which operate cooperatively to resolve a processing need. Such entities frequently operate within a system and are frequently subsets of larger systems tailored to address a specific processing aspect, but may originate remotely making demands on the local system. In complex systems, entities frequently compete and share resources within the environment and the operation of one entity may affect, degrade, inhibit, or even destabilize the operation of another. One of the problems in distributed information processing and computing is the coordination of activities among the various entities in the environment. While the coordination problem manifests itself in distributed environments, it also appears in other contexts such as integrated multi-component computing systems where coordination is required between multiple components which may reside within the same cabinet or in service environments where resources must be shared.
One example of this problem is the creation of features in telephone switching systems. Telephone switching systems are typically very large. They are implemented to provide many hundreds of features and consist of tens of millions of lines of code. These systems are not static. The developers of such systems are required by competitive pressures to add features on a regular basis. This presents the problem that the additional functions of new features interact with the functioning of features already present in the system. In the worst case, the newly added features can disable the functioning of an older feature, destabilize the system or create conditions which will confuse the user. Because of this problem, previous approaches have expended considerable effort during the development of new features to determine all possible interactions with all of the other features in the system. There have been many proposals to handle the problem of feature interaction in telephone systems. In one prior art system, Northern Telecom has developed a method in which models of call set up have been developed for the Intelligent Network and the Advanced Intelligent Network where features are constructed as separate state machines which interact by communication through a stack based mechanism to provide a degree of regularity in call processing.
A second example of the problem is the coordination and allocation of resources in the provisioning of a service, especially in real time environments where there are time and qualitative constraints. Where there are numerous applications that use a service, such as a printing service, and a number of print processes that serve requests, difficulty occurs in allocating resources to get the job done given the various priorities and quality requirements of each job and the current status and capability of each resource.
A third example of the problem is component coordination in multiple component systems. Component based hardware and software uses parts developed by different vendors. Vendors create components from parts developed by other vendors. When components are brought together, in some circumstances, they modify the behavior of other components. If the parts are static, with their behavior well known and not expected to change over the course of a component's lifetime, then it is possible to identify and resolve all possible component interactions at the time of the original system design. However, in this prior art approach, it is necessary to consider the behavior of any part in the presence of all the possible combinations of all other parts. When the number of parts becomes large, the task becomes enormous, and virtually impossible when components are not available and their behavior not known beforehand at design time, or the behavior can be changed or upgraded after the initial implementation.
The use of tuple spaces is also known in the art as a means of communication between entities. A tuple space is an instance of a blackboard architecture where there are knowledge sources or entities that invoke operations on the blackboard. In the prior art, knowledge sources communicate with the tuple space using a publish-subscribe mechanism. An entity in a prior art tuple space will publish the occurrence of its action or event such that other entities who subscribe become aware that the event has occurred. These prior art tuple spaces are event based and asynchronous. This means that the tuple space provides matching and processing of tuples on the occurrence of events. However, there are problems with prior art tuple spaces. The event based, asynchronous nature of prior art tuple spaces leads to complications in synchronization, maintaining of data integrity and potential dead-locks. There are no assurances that events will occur or means to communicate that the occurrence of an event is no longer relevant.